YA

[C++] [TFS 1.X] Player (Mestre) Não Pode Atacar Seus Summons e Seus Summons Não Atacam Outros Players

Por Yan Oliveira, 29 de jan. de 2021 em Linguagens de Programação

c++
tfs 1.x
6
1.6k
Yan OliveiraY
29 de janeiro de 2021 às 00:59

Olá pessoal!

 

Esse é um tutorial bem simples para o player(master) não poder atacar seus summons e o summon do player(master) não atacar outros players.

 

Esse tutorial é muito útil principalmente para quem está desenvolvendo derivados.

 

*OBS: Esse tutorial só funciona para TFS 1.X (1.0+)

 

Vamos ao tutorial!!!

 

Siga os passos à seguir:

 

1-  Abra sua source e procure o arquivo combat.cpp

2- Procure pela função: 

ReturnValue Combat::canTargetCreature(Player* attacker, Creature* target)

3- Insira o código à seguir dentro da função encontrada no passo anterior:

// BLOCO QUE O PLAYER (MASTER) NÃO PODE ATACAR O SUMMON //
if (target->isSummon())
{
	return RETURNVALUE_YOUMAYNOTATTACKTHISCREATURE;
}

// BLOCO QUE O SUMMON DO PLAYER (MASTER) NÃO PODE ATACAR OUTRO JOGADOR //
if (attacker->isSummon() && target->getPlayer())
{
	return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
}

 

4- Compile a source

 

Pronto! Agora está terminado e você pode jogar!

 

Um recurso simples, mas bem útil.

Editado Janeiro 30 por Yan18

LordfireL
30 de janeiro de 2021 às 01:57

Essa condição:

attacker->getPlayer()

é sempre verdadeira, então vc pode remover do if

 

---

 

target->getCreature()

target já é uma Creature, então isso sempre retorna o mesmo valor de target, vc pode escrever somente

target

---

 

Essa condição:

attacker->getCreature()->isSummon()

é sempre falsa e o if nunca vai ser executado

 

Yan OliveiraY
30 de janeiro de 2021 às 10:27
8 horas atrás, Lordfire disse:

Essa condição:

attacker->getPlayer()

é sempre verdadeira, então vc pode remover do if

 

---

 

target->getCreature()

target já é uma Creature, então isso sempre retorna o mesmo valor de target, vc pode escrever somente

target

---

 

Essa condição:

attacker->getCreature()->isSummon()

é sempre falsa e o if nunca vai ser executado

 

 

Entendi! Obrigado pelo conselho e pelas dicas, estou aprimorando meu C++ (que ainda é básico).

 

No caso da última condição que você disse que será sempre false, é porque o attacker (atacante) sempre será o player? Mesmo que ele tenha summons?

 

 

LordfireL
30 de janeiro de 2021 às 19:52

@Yan18sim. Essa função só é executada com um player como `attacker`, então nunca vai acontecer de `isSummon` ser `true`

Yan OliveiraY
30 de janeiro de 2021 às 21:21
1 hora atrás, Lordfire disse:

@Yan18sim. Essa função só é executada com um player como `attacker`, então nunca vai acontecer de `isSummon` ser `true`

Entendi, interessante. Ai no caso para o meu summon não atacar outro summon de outro player ou outro player, eu faço verificação no arquivo creatures.lua da pasta Data/Events correto?

4 anos depois...
BettimB
29 de outubro de 2025 às 17:58
Em 29/01/2021 em 05:59, Yan Oliveira disse:

Olá pessoal!

 

Esse é um tutorial bem simples para o player(master) não poder atacar seus summons e o summon do player(master) não atacar outros players.

 

Esse tutorial é muito útil principalmente para quem está desenvolvendo derivados.

 

*OBS: Esse tutorial só funciona para TFS 1.X (1.0+)

 

Vamos ao tutorial!!!

 

Siga os passos à seguir:

 

1-  Abra sua source e procure o arquivo combat.cpp

2- Procure pela função: 

ReturnValue Combat::canTargetCreature(Player* attacker, Creature* target)

3- Insira o código à seguir dentro da função encontrada no passo anterior:

// BLOCO QUE O PLAYER (MASTER) NÃO PODE ATACAR O SUMMON //
if (target->isSummon())
{
	return RETURNVALUE_YOUMAYNOTATTACKTHISCREATURE;
}

// BLOCO QUE O SUMMON DO PLAYER (MASTER) NÃO PODE ATACAR OUTRO JOGADOR //
if (attacker->isSummon() && target->getPlayer())
{
	return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
}

 

4- Compile a source

 

Pronto! Agora está terminado e você pode jogar!

 

Um recurso simples, mas bem útil.

Aliás, pra quem gosta de diversão online além dos jogos, recomendo dar uma olhada no mostbet casino — é um ótimo site de cassino online, perfeito pra relaxar depois de horas de programação ou testes no servidor.

Essas pequenas modificações realmente fazem diferença, especialmente pra quem está personalizando servidores baseados em TFS. É um detalhe simples, mas melhora muito a jogabilidade e evita vários problemas com summons atacando quem não devem. Obrigado por compartilhar — com certeza vai ajudar muita gente que está desenvolvendo derivados!